package com.whfc.ms.api.fim.service;

import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.fim.dto.FimResultAnalysisDTO;
import com.whfc.fim.dto.FimResultDTO;
import com.whfc.fim.dto.FimResultRateContDTO;
import com.whfc.fim.dto.FimWarnAnalysisDTO;
import com.whfc.fim.param.FimAlgResultDelParam;
import com.whfc.fim.param.FimResultBatchHandleParam;
import com.whfc.fim.param.FimResultEditParam;

import java.util.Date;

/**
 * @author : qzexing
 * @version : 1.0
 * @date : 2020-09-08 20:02
 */
public interface MsFimResultService {

    /**
     * 记录列表
     *
     * @param pageNum      页码
     * @param pageSize     每页数量
     * @param deptId       组织机构ID
     * @param handleStatus 操作状态
     * @param algCheckType 报警类型
     * @param startTime    开始时间
     * @param endTime      结束时间
     * @return PageData<FimResultDTO>
     */
    PageData<FimResultDTO> list(Integer pageNum, Integer pageSize, Integer deptId, Integer handleStatus, Integer algCheckType, Date startTime, Date endTime);

    /**
     * 批量删除智能监控报警记录
     *
     * @param param
     */
    void del(FimAlgResultDelParam param);


    /**
     * 获取报警记录详情
     *
     * @param resultId 报警记录ID
     * @return 报警记录
     */
    FimResultDTO detail(Integer resultId);

    /**
     * 处理报警记录
     *
     * @param editParam 处理报警记录参数
     */
    void handle(FimResultEditParam editParam);

    /**
     * 报警记录-批量处理报警记录
     *
     * @param param
     */
    void batchHandle(FimResultBatchHandleParam param);

    /**
     * 报警记录分析-时间段统计
     *
     * @param deptId    组织机构ID
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 报警记录分析DTO
     */
    FimResultAnalysisDTO analysis(Integer deptId, Date startTime, Date endTime);

    /**
     * 报警记录分析-按天统计
     *
     * @param deptId 组织机构ID
     * @param date   日期
     * @return 报警记录分析DTO
     */
    FimResultAnalysisDTO analysis(Integer deptId, Date date);

    /**
     * 报警次数统计
     *
     * @param deptId
     * @param handleStatus
     * @param startTime
     * @param endTime
     * @return
     */
    ListData<FimResultRateContDTO> warnNumstatic(Integer deptId, Integer handleStatus, Date startTime, Date endTime);

    /**
     * 一天的报警次数分析
     *
     * @param deptId
     * @param date
     * @return
     */
    FimWarnAnalysisDTO analysisByHour(Integer deptId, Date date);

    /**
     * 一个月的报警次数分析
     *
     * @param deptId
     * @param month
     * @return
     */
    FimWarnAnalysisDTO analysisByDate(Integer deptId, Date month);
}
